## Contents

*   [1 Преамбула](#.D0.9F.D1.80.D0.B5.D0.B0.D0.BC.D0.B1.D1.83.D0.BB.D0.B0)
*   [2 Требования](#.D0.A2.D1.80.D0.B5.D0.B1.D0.BE.D0.B2.D0.B0.D0.BD.D0.B8.D1.8F)
*   [3 Подготовка](#.D0.9F.D0.BE.D0.B4.D0.B3.D0.BE.D1.82.D0.BE.D0.B2.D0.BA.D0.B0)
*   [4 Использование утилиты xlaunch](#.D0.98.D1.81.D0.BF.D0.BE.D0.BB.D1.8C.D0.B7.D0.BE.D0.B2.D0.B0.D0.BD.D0.B8.D0.B5_.D1.83.D1.82.D0.B8.D0.BB.D0.B8.D1.82.D1.8B_xlaunch)
*   [5 Как это выглядит](#.D0.9A.D0.B0.D0.BA_.D1.8D.D1.82.D0.BE_.D0.B2.D1.8B.D0.B3.D0.BB.D1.8F.D0.B4.D0.B8.D1.82)
*   [6 Профит](#.D0.9F.D1.80.D0.BE.D1.84.D0.B8.D1.82)

### Преамбула

Описываемый ниже метод подойдет в принципе для любого приложения, но наибольшую пользу он приносит для полноэкранных игр (как нативных, так и запускаемых под wine'ом).

Как известно, в большинстве своём свернуть полноэкранную игру в линуксе нереально — можно, конечно, попробовать переключиться на другой виртуальный рабстол, только большинство игр этого не любят и начинают глючить или вовсе вылетают. Кроме того, многие оконные менеджеры тоже вносят свою лепту в несовместимость (в основном оное касается игр, запускаемых под wine), особенно в этом деле отличается compiz.

В принципе, под офтопиком тоже не все в порядке — далеко не все игры спокойно переносят вмешательство в свои дела, но процент удачных случаев там несоизмеримо выше.

### Требования

Для данного метода вам не потребуется ничего дополнительного сверх того, что нужно для классического способа запуска игры.

### Подготовка

Для начала создайте файл шелл-скрипта для запуска игры. У меня все такие скрипты хранятся в `~/.config/bin`, но дело ваше, где они будут, это не принципиально совершенно. Вот пример для скрипта запуска игры nexuiz:

```
%>cat ~/.config/bin/nexuiz.sh
/usr/bin/nexuiz-glx-svn

```

т.е. просто указание бинарника. Вот пример для запуска Civilization 4 под wine:

```
%>cat ~/.config/bin/civ4.sh
cd ~/.wine/drive_c/games/Civilization\ 4/Beyond\ the\ Sword
WINEDEBUG=-all wine Civ4BeyondSword.exe

```

— для некоторых приложений лучше менять текущий каталог на тот, где лежит бинарник.

Y Команда запуска предельно проста:

```
startx /foo/bar/script -- :1

```

т.е. для nexuiz из примера выше она будет такой:

```
startx ~/.config/bin/nexuiz.sh -- :1

```

Почему я записываю путь к бинарнику в промежуточный шелл-скрипт, вместо того чтобы сразу скормить его startx? По неведомым для меня (пока?) причинам, это работает не со всеми играми.

Параметр ":1" указывает на номер виртуального дисплея для создаваемого X-сервера (первый по умолчанию запускается на дисплее ":0").

Теперь можете вешать эту команду на любую кнопку, иконку, алиас в шелле или что вы там предпочитаете и использовать.

### Использование утилиты xlaunch

Незадолго после написания статьи в обновлениях [AUR](/index.php/Arch_User_Repository_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9) "Arch User Repository (Русский)")'а обнаружил утилитку [xlaunch](https://aur.archlinux.org/packages/xlaunch/). Она удобнее описанного мной способа ручной настройки запуска, так как для её использования после установки достаточно команды `xlaunch app`.

Она сама выберет свободный дисплей для запуска приложения. Кроме способа запуска механизм использования от вышеприведённого способа ничем не отличается.

### Как это выглядит

При запуске экран почернеет, создастся новый X-сервер и в нем запустится указанное приложение. Завершение работы приложения будет означать автоматическую остановку этого дополнительного X-сервера. Переключаться между старым и новым можно с помощью хоткеев Ctrl+Alt+F7 для старого, Ctrl+Alt+F8 для нового.

### Профит

Что это нам в итоге дает?

*   Большую совместимость — оконный менеджер больше не может помешать работе игры, т.к. на новом X-сервере оконного менеджера нет как такового — игра сама себе оконный менеджер. Другие приложения тоже не будут мешать (скажем попапами), т.к. исполняются на другом дисплее.
*   Большую производительность — во многих ненативных играх прирост заметен безоружным глазом (например в цив4).
*   Возможность переключиться на другие приложения — этот плюс трудно переоценить. Можно, например, вернуться в jabber-клиент для координации действий, скажем — на каком сервере вы с друзьями будете играть. При том безглючность переключения 100% (по крайней мере я не видел проблем ни разу), что оставляет офтопик далеко позади по результативности.

Наслаждайтесь.

*Strafer*